package org.example.campusforum.entity;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * 评论举报记录实体类
 *
 * 对应数据库中的comment_report表，用于存储用户对评论的举报信息。
 * 支持论坛的内容监管功能，记录举报详情和处理状态。
 * 帮助管理员识别和处理违规评论内容。
 *
 * @author CampusForum Team
 * @version 1.0
 * @since 2024
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class CommentReport implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 举报记录主键ID
     * 数据库自增长字段，唯一标识一条举报记录
     */
    private Long id;

    /**
     * 被举报的评论ID
     * 外键关联comment表的id字段，标识被举报的评论
     */
    private Long commentId;

    /**
     * 评论发表者用户ID
     * 外键关联user表的id字段，标识被举报评论的作者
     */
    private Long postUserId;

    /**
     * 举报人用户ID
     * 外键关联user表的id字段，标识执行举报操作的用户
     */
    private Long reportUserId;

    /**
     * 举报时间
     * 记录用户提交举报的时间，数据库默认为当前时间
     */
    private LocalDateTime reportTime;

    /**
     * 举报原因
     * 用户填写的举报理由，说明评论违规的具体情况
     */
    private String reason;

    /**
     * 举报处理状态
     * 0: 未处理 - 举报刚提交，等待管理员处理
     * 1: 已处理 - 管理员已处理该举报，可能已采取相应措施
     */
    private Integer status;
}
